<?php
/**
 * 开发环境配置
 */
declare(strict_types=1);

use Libraries\Dispatcher;
use Swoole\Constant;

return [
    'redis' => [
        'host' => '127.0.0.1',
        'port' => 6379,
        'auth' => 'abc123',
        'db_index' => 0,
        'pool_size' => 10,
    ],
    'mysql' => [
        'host' => '127.0.0.1',
        'port' => 3306,
        'user' => 'root',
        'password' => 'abc123',
        'dbname' => 'mysql',
        'charset' => 'utf8mb4',
        'pool_size' => 10,
    ],
    'err_pages' => [
        '404' => '/404.html', // 404页面
        '500' => '/500.html', // 500页面
    ],
    'http_server' => [
        'bind_host' => '::',
        Constant::OPTION_REACTOR_NUM => 1, // 设置启动的 Reactor 线程数。【默认值：CPU 核数】
        Constant::OPTION_WORKER_NUM => 2, // 设置启动的 Worker 进程数。【默认值：CPU 核数】
        Constant::OPTION_MAX_REQUEST => 5000, // 设置 worker 进程的最大任务数。【默认值：0 即不会退出进程】
        Constant::OPTION_MAX_CONN => 500, // 服务器程序，最大允许的连接数。【默认值：ulimit -n】
        Constant::OPTION_DAEMONIZE => 0, // 守护进程化【默认值：0】
        Constant::OPTION_LOG_LEVEL => 0, // 设置 Server 错误日志打印的等级，范围是 0-6。低于 log_level 设置的日志信息不会抛出
        Constant::OPTION_OPEN_HTTP2_PROTOCOL => true, // 启用 HTTP2 协议解析
        Constant::OPTION_WEBSOCKET_SUBPROTOCOL => 'my_swoole', // 设置 WebSocket 子协议
        // Constant::OPTION_TASK_WORKER_NUM => 2, // 配置 Task 进程的数量,最大值不得超过 swoole_cpu_num() * 1000
        // Constant::OPTION_TASK_MAX_REQUEST => 1000, // 设置 task 进程的最大任务数。一个 task 进程在处理完超过此数值的任务后将自动退出
    ],
    'jwt_key_HS256' => 'a-test-key-should-be-updated',
    'hooks' => [
        Dispatcher::HOOK_BEFORE => [
            'RateLimit',
            'JwtAuth',
        ],
        Dispatcher::HOOK_AFTER => [
            'SaveAccessLog',
        ],
    ],
];
